package 集合.Map集合的特点;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*map集合的对象
 *       特点：
 * 双链集合，元素由键值对（Entry）构成
 * 键（key）-----value（值）
 *
 * 注意：
 * key（键）不可以重复，值（value）可以重复
 * 应用
 * *       Map<T1, T2>map = new HashMap<>（）；
 *       解释：T1:表示键的数据类型
 *            T2：表示值的数据类型
 *
 * 成员方法
 *       V put(K key, V value)        添加元素（键值对的形式）
 *                                    元素第一次添加，返回null
 *                                     重复添加，会用新值覆盖旧值，并返回旧值*   * *
 *       V get(Object key);           根据键获取其对应的值
 *       Set<K> keySet();              获取所有键的集合
 * * * * * * * * */
public class text {
    public static void main(String[] args) {
        //往map集合中添加3个学生对象，然后打印

        //创建学生对象
        //键:学生的编号  值：具体的学生对象
        Map<Integer, Student> map = new HashMap<>();
        //创建元素对象
        Student s1 = new Student("张三", 22);
        Student s2 = new Student("李四", 23);
        Student s3 = new Student("张三", 22);

        //将元素对象添加到集合中  元素第一次添加，返回null  重复添加，会用新值覆盖旧值，并返回旧值
        Student stu1 = map.put(1, s1);
        System.out.println("stu1:" + stu1);
        Student stu2 = map.put(1, s2);
        System.out.println("stu2:" + stu2);
        System.out.println("_-------------------------");

        map.put(1, s1);
        map.put(2, s2);
        map.put(3, s3);

        //根据键获取值
        Student stu3 = map.get(2);
        System.out.println("key:" + 2 + "value" + stu3);
        System.out.println("-------------------------");
        //打印集合
        System.out.println(map);
        System.out.println("----------------------");


        //遍历集合
        //获取所有键的集合          keySet();
        Set<Integer> keys = map.keySet();
        //遍历所有的键，获取到每一个键   迭代器 增强for
        //获取迭代器对象
        Iterator<Integer> it = keys.iterator();
        while (it.hasNext()) {
            //如果迭代器中有数据，就获取
            Integer key = it.next();
            //根据键获取值        get();
            Student value = map.get(key);
            System.out.println("key:" + key + "   .. value:" + value);
            System.out.println("-----------------------------");
        }

        //通过增强for实现
        //获取到所有的键
        Set<Integer> keys1 = map.keySet();
        for (Integer key : keys1) {
            //key就是双列集合中的每一个键
            Student student = map.get(key);
            System.out.println(student);
        }

    }
}
